package web.exhandlers;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import pojo.Code;
import pojo.R;
import pojo.ResultEnum;

//@ControllerAdvice //增强版的Controller
//@ResponseBody
@RestControllerAdvice  //相当于 @ControllerAdvice + @ResponseBody
public class ExHandler2 {


    @ExceptionHandler(Exception.class)  //表示处理器的具体异常类型
//    @ResponseBody //表示返回值不是视图
    public R ex1(Exception e){  //处理器方法

        e.printStackTrace();

        //收集异常日志，并发送邮件通知开发人员
        System.out.println(e.getMessage());
        return R.error(ResultEnum.ERROR);
    }

    @ExceptionHandler(BusinessException.class)  //表示处理器的具体异常类型
//    @ResponseBody //表示返回值不是视图
    public String businessEx(BusinessException e){  //处理器方法

        //收集异常日志，并发送邮件通知开发人员
        System.out.println(e.getMessage());

        int code = e.getCode();

        if (code == Code.ERROR_AGE){
            return "年龄不合法";
        }else if(code == Code.NO_LOGIN){
            return "尚未登录";
        }

        return "error...";
    }

    @ExceptionHandler(MaxUploadSizeExceededException.class)
//    @ResponseBody
    public String maxUploadSizeExceededException(MaxUploadSizeExceededException e){

        return "文件过大";
    }
}
